import { defineStore } from 'pinia'

export const useContactInfoStore = defineStore('contactInfo', {
  state: () => {
    return {
      contactInfo: {}, // 点击联系人时 右边面板的联系人详情信息
      contactInfoB: {}, // 用于存储发送名片时的联系人信息
      contactInfoList: [],
      contactBlacklistList: []
    }
  },
  getters: {
    // getInfo:(state) => state.contactInfo
  },
  actions: {
    getContactInfo() {
      return this.contactInfo
    },
    getContactInfoB() {
      return this.contactInfoB
    },
    getContactInfoList() {
      return this.contactInfoList
    },
    getContactBlacklistList() {
      return this.contactBlacklistList
    },
    setContactInfo(contactInfo) {
      this.contactInfo = contactInfo
    },
    setContactInfoB(contactInfoB) {
      this.contactInfoB = contactInfoB
    },
    setContactInfoList(contactInfoList) {
      this.contactInfoList = contactInfoList
    },
    setContactBlacklistList(contactBlacklistList) {
      this.contactBlacklistList = contactBlacklistList
    },
    // 添加联系人信息到联系人列表
    addContactInfo(contactInfo) {
      if (!contactInfo) return
      // 检查是否已存在相同的联系人（基于某个唯一标识，如id或userId）
      const exists = this.contactInfoList.some(
        (item) => item.contactUserId === contactInfo.contactUserId
      )
      if (exists) return
      this.contactInfoList.push(contactInfo)
    },
    // 添加联系人信息到黑名单列表
    addContactBlacklist(contactInfo) {
      // 检查是否已存在相同的联系人（基于某个唯一标识，如id或userId）
      const exists = this.contactBlacklistList.some((item) => item.id === contactInfo.id)
      if (!exists) {
        this.contactBlacklistList.push(contactInfo)
      }
    }
  },
  persist: true // 全部使用默认配置 将数据持久化到localStorage
  // persist: {  //  persist 属性来配置持久化
  //   enabled: true,
  //   strategies: [
  //     {
  //       key: 'piniaStore', //存储名称
  //       storage: sessionStorage, // 存储方式
  //       paths: ['userInfo'], //指定 state 中哪些数据需要被持久化。[] 表示不持久化任何状态，undefined 或 null 表示持久化整个 state
  //     },
  //   ],
  // },
})

/**
 * 使用方法
 * 1.创建对象  useUserInfoStore = useUserInfoStore()
 * 2. 获取属性  useUserInfoStore.userInfo
 * 3. 获取计算属性   useUserInfoStore.getInfo
 * 4. 设置属性  useUserInfoStore.setInfo(userInfo)
 * 5. 结构 创建响应式 属性 const {name,age} = storeToRefs(userStore)   import {storeToRefs} from 'pinia'
 * 5. 结构 创建响应式 属性 const {name,age} = toRefs(userStore)   import {toRefs} from 'vue'
 *
 *
 */

/**
 * persist 文档参考 https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/
 */
